This page last changed on Nov 14, 2004 by plightbo.

感谢XWork让WebWork拥有非常先进的类型转换能力. 更多内容参见Type Conversion.

一个简单的例子

当你需要将一个字符串转换成为一个更为复杂的对象时, 类型转换能发挥强大的作用. 由于Web是类型不可知的(type-agnostic)(HTTP中任何类型都是字符串), 因此WebWork的类型转换功能非常有用. 例如, 如果你提示用户使用字符串格式("3, 22")输入一个坐标, 你需要让WebWork完成String到Point和Point到String的转换.

总会发生转换错误(例如用户输入错误的格式). WebWork通过XWork类型转换错误处理机制来处理它.

使用"point"的例子, 如果活动(或者其他需要设置属性的组合对象)有一个对应的className-conversion.properties文件, WebWork会使用配置的类型转换器进行该类和字符串的转换. 因此将"3, 22"转换成new Point(3, 22)只需在ClassName-conversion.properties中加入下列内容:

point = com.acme.PointConverter
# 注意: PointerConverter必需实现ognl.TypeConverter 
#          或继承ognl.DefaultTypeConverter

你编写的类型转换器必须检查被用于转换哪种类型. 由于全部是与String进行相互转换, 需要将转换方法分为两部分: 一个将String转换为Point, 另一个将Point转换为String.

这些完成后, 你可以引用point对象(<ww:property value="point"/>)并且它将输出为"3, 22". 同样的, 如果你将它提交到活动, 它将再次转换成Point.

注意: 类型转换不能作为i18n的替代品. 不推荐使用这一特性输出相应的日期格式. 相反, 你应该使用WebWork的i18n功能(并且研究一下JDK中MessageFormat的JavaDoc)来了解如何使用相应正确的日期格式.

帮助类/a>

WebWork附带了一个帮助类以便更容易实现类型转换. 该类是com.opensymphony.webwork.util.WebWorkTypeConverter. 它编写类型转换器更加容易.
Document generated by Confluence on Dec 14, 2004 16:36